/**
 * 表单控件-多行文本输入框
 */
;( function( global, factory ) {
	"use strict";
	if ( typeof define === "function" && define.amd ) {
		define(['util/commonUtil', 'components/BaseElement', 
		  'util/formElementManager', 'util/formRender', 'util/formSetting', 'flatpickr/flatpickr'], function(a, b, c, d, e, f){
			return factory(global, a, b, c, d, e, f);
		});
	} else {
		factory(global);
	}
} )( typeof window !== "undefined" ? window : this, function( window, commonUtil, BaseElement, formElementManager, formRender, formSetting, flatpickr ) {
	//console.log(typeof BaseElement);
	let dateFormat = [ 'Y-m-d H:i', 'Y-m-d', 'H:i' ];
	let dateType   = [ 'dt', 'd', 't' ];
	class DateTime extends BaseElement {
		constructor(domId){
			super({
				"typeId": "DateTime",
				"domId": domId,
				"show": {
					"glyphicon": "glyphicon-calendar", //glyphicon图标
					"label": "日期时间" //拖拽控件显示名称
				}
			});
			//console.log('DateTime create.');
		}
		
		createDom() {
			if(typeof this.dom === 'undefined') {
				let html = '';
				html += '<div class="form-group">';
				html += ' <label class="control-label"><span class="label-name">日期时间</span></label>';
				html += ' <div class="control-div">';
				//html += '  <div class="if-input-group">';
				html += '  <div class="flatpickr">';
				html += '   <input class="form-control form-datepicker" />';
				html += '   <a class="input-button" title="toggle" data-toggle><i class="icon-calendar"></i></a>';
				html += '   <a class="input-button" title="clear" data-clear><i class="icon-close"></i></a>';
				html += '  </div>';
				//html += '  </div>';
				html += '  <div class="other-msg">';
				//html += '  <p class="validate-msg"></p><p class="static-info"></p>';
				html += '  </div>';
				html += '</div></div>';
				this.dom = commonUtil.textTurnDOM(html);
				this.$dom = $(this.dom);
				this.inputDom().on("focus", function(){$(this).blur();return false;});
				//formRender.render_datePicker(this.$dom);
			}
			return this.dom;
		}
		
		set property(property) {
			super.property = property;
			//根据不同的属性类型切换不同的日期控件
			let rv = property?.referenceValue;
			let df = dateFormat[0];
			let dt = dateType[0];
			
			if('5' == rv) {
				//日期时间
				
			} else if('24' == rv) {
				//日期
				df = dateFormat[1];
				dt = dateType[1];
			} else if('31' == rv) {
				//时间
				df = dateFormat[2];
				dt = dateType[2];
			}
			this.inputDom()?.attr("data-dateFormat", df);
			this.inputDom()?.attr("data-dateType", dt);
			this._dateFormat = df;
			this._dateType = dt;
			formRender.render_datePicker(this.$dom);
		}
		
		inputDom() {
			return this.$dom.find("input.form-control");
		}
		
		val(val) {
			if(typeof val === 'undefined') {
				return this.inputDom()?.val()??"";
			}
			if(val) {
				if( this._dateType == 't' && typeof(flatpickr) !== 'undefined' ) {
					let valDate = flatpickr.parseDate(val, 'Y-m-d H:i');
					let valstr = flatpickr.formatDate(valDate, "H:i");
					val = valstr;
				}
			}
			super.val(val);
			formRender.render_datePicker(this.$dom);
		}
		dom4SetDefaultValue() {
			if(typeof this.defaultValueDom === 'undefined') {
				let thisGhost = this;
				let html = '';
				html += '<select id="formSetting-defaultValue" class="form-control">';
				html += ' <option value="">无</option>';
				html += ' <option value="now">当前时间</option>';
				html += '</select>';
				
				this.defaultValueDom = commonUtil.textTurnDOM(html);
				//默认值输入项绑定事件
				this.defaultValueDom.addEventListener('change', function(){
					let val = $(this).val();
					thisGhost.setDefaultValue(val);
				});
			}
			if(this.defaultValue) {
				this.defaultValueDom.value = this.defaultValue;
			}
			return this.defaultValueDom;
		}
		
		formSets() {
			//console.log(this.settingItems);
			if(typeof this.settingItems === 'undefined') {
				super.formSets();
				//this.settingItems.push(formSetting.inputLength);
			}
			return this.settingItems;
		}
	}
	return DateTime;
	
	
	
	
	/**
	 * 
日期格式令牌
字符	描述	例子
d	每月的某天，前两位为零	01 到 31
D	一天的文字表示	周一至周日
l (小写的 'L')	星期几的完整文字表示	周日至周六
j	没有前导零的月份中的一天	1 到 31
J	每月中没有前导零和序号后缀的日期	1st, 2nd, 到 31st
w	星期几的数字表示	0（星期日）至6（星期六）
W	周的数字表示	0（一年的第一周）到52（一年的最后一周）
F	一个月的完整文字说明	一月到十二月
m	一个月的数字表示，前导零	01 至 12
n	一个月的数字表示形式，不带前导零	1 至 12
M	一个月的简短文字说明	一月至十二月
U	自Unix时代以来的秒数	1413704993
y	一年的两位数表示	99 或 03
Y	一年的完整数字表示形式，4位数字	1999 或 2003
Z	ISO日期格式	2017-03-04T01:23:43.000Z


时间格式化令牌#
字符	描述	例子
H	小时（24小时）	00 到 23
h	小时	1 到 12
G	小时，两位数，前导零	1 到 12
i	分钟	00 到 59
S	秒，两位数	00 到 59
s	秒	0, 1 到 59
K	AM/PM	AM 或 PM



	 */
} );